﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Systemet.Technical
{
    class WriteFile
    {
        private LinqToSQLDataContext database;
        private List<string> linesToWrite;
        private string pass = AccessController.Instance.Connection;
        private List<Intäktsbudget> listIntäktsbudget;

        //Skriver till fil
        public void writeFile()
        {
            linesToWrite = new List<string>();

            readIntäktsbudgetFromDatabase();
            linesToWrite.Add("Konto;Ansvar;ProduktID;Produkt;KundID;Kund;Belopp");

            foreach (Intäktsbudget it in listIntäktsbudget)
            {
                linesToWrite.Add("3010;" + it.Avdelning + ";" + it.ProdID + ";" + it.ProduktNamn + ";" + it.KundID + ";" +
                                    it.KundNamn + ";" + it.Budget);
            }

            System.IO.File.WriteAllLines(@"BudgetProduktKund.txt", linesToWrite);
            //Efter färdig export - Gå igenom en readFile (linesToWrite) för att kontrollera antal rader (felkontroll)
            //Returnera true/false beroende på OK/INTE OKs
        }

        /// <summary>
        /// Används för att läsa in låsta Intäktsbudgetregister från databasen för att sedan kunna exportera
        /// de låsta budgeteringarna till en textfil.
        /// </summary>
        /// <returns>Returnerar en lista av låsta intäktsbudgeteringar</returns>
        private List<Intäktsbudget> readIntäktsbudgetFromDatabase()
        {
            listIntäktsbudget = new List<Intäktsbudget>();
            database = new LinqToSQLDataContext(pass);

            var intäktsBudgetar = from Intäktsbudgetregister in database.Intäktsbudgetregisters
                                  join Produktregister in database.Produktregisters on Intäktsbudgetregister.produktID equals Produktregister.produktID
                                  join Kundregister in database.Kundregisters on Intäktsbudgetregister.kundID equals Kundregister.kundID
                                  where Intäktsbudgetregister.låst == true
                                  select new { Produktregister.avdelningsnamn, Produktregister.produktID, Intäktsbudgetregister.avtal, Intäktsbudgetregister.tillagg, Produktregister.produkt, Kundregister.kundID, Kundregister.kundNamn };

            listIntäktsbudget = intäktsBudgetar.AsEnumerable()
                                            .Select(i => new Intäktsbudget
                                            {
                                                Avtal = i.avtal * -1,
                                                Tillägg = i.tillagg * -1,
                                                Avdelning = i.avdelningsnamn.TrimEnd(),
                                                ProdID = i.produktID.TrimEnd(),
                                                ProduktNamn = i.produkt,
                                                KundID = i.kundID.TrimEnd(),
                                                KundNamn = i.kundNamn
                                            }).ToList();

            database.Connection.Close();

            return listIntäktsbudget;
        }
    }
}
